#pragma once

#include <vector>
#include <string>
#include <sstream>

#include <ft2build.h>
#include <freetype/freetype.h>
#include <freetype/ftglyph.h>
#include <freetype/ftoutln.h>
#include <freetype/fttrigon.h>

#include "SDL.h"
#include "SDL_opengl.h" 

using std::vector;
using std::string;

class Font;

void append(std::string &s, int);
void append(std::string &s, float);
void append(std::string &s, double);
void append(std::string &s, long);



struct font_data {
	float h;// Holds The Height Of The Font.
	GLuint * textures;// Holds The Texture Id's 
	GLuint list_base;// Holds The First Display List Id

	// The Init Function Will Create A Font With
	// The Height h From The File fname.
	bool init(const char * fname, unsigned int h);

	// Free All The Resources Associated With The Font.
	void clean();
};




class Font
{
private:
	font_data* font;

public:
	Font(std::string, unsigned int);
	~Font(void);


	void drawText(int,int,std::string);
	int getWidth(std::string);
};
